This invention is related to the field of memories generally and specifically to memories with the capability for automatic configuration.
When power is first applied to a computer, or when the computer is first activated from some inactive state, it must be initialized. This is typically done using a "bootstrap" program which sets the computer into an initialization state, obtains information needed for operation, and performs other "housekeeping" functions, such as automatic testing. One item of information which a computer needs for proper operation is the size and configuration of its memory, i.e., how much total memory is available and how is it distributed. For example, in a memory with 512K words, all of the memory can be on one board or it can be dispersed over several boards, such as four boards each with 128K of memory. It is important for the circuitry in the computer which controls the memory to know the memory configuration so that such memory control circuitry can activate the appropriate address control lines when the memory is accessed.
In modern computer systems, memory components are typically placed on several memory boards, each of which includes one or more individual banks of memory. The different banks of memory are then assigned different memory address locations. Then, during a read or write operation, only the bank containing the desired address location is accessed. To assign memory address locations to the different banks of memory cells, the control logic in the memory must know how many banks there are, where those banks are located, and how big each of the banks are.
One method of obtaining this information is to have an operator enter it either through switches or through a console. This method, however, requires that the operator both be able to determine the size and configuration of the memory and be accurate in entry of this information. In many applications, this requirement is difficult to implement.
More recently, processors have adopted one or more of automatic methods determining the size and configuration of the memory. A very basic automatic method is described in U.S. Pat. No. 4,330,825 to Girard which automatically counts the number of modules. Since the memory modules in that method have the same memory size, the number of modules sets both the size of the memory and its configuration. This method, however, cannot be used if the modules have different memory sizes.
Another approach is shown in U.S. Pat. No. 4,025,903 to Kaufman et al. In Kaufman et al., each memory module knows its own size and uses its own range calculator to determine its address space. The memory modules are sequentially ordered and the first module determines its address space as beginning at the first memory location and ending at a location equal to the address of that first location plus the memory size of that module. That first module passes its final address to the next memory module, which calculates its initial address from the previous module's final address information and its final address from its own size information. That final address is passed to the next memory module and this process continues until each memory module computes its beginning and ending addresses. Memory is accessed in these systems by sending memory addresses to all the memory modules and letting the modules decide for themselves whether they contain the locations corresponding to those memory addresses. Although this system is very flexible, it requires intensive use of scarce backplane resources because the control circuitry is not centralized.
Another approach which has been employed is shown in U.S. Pat. No. 4,468,729 to Schwartz et al. In this memory system, specialized circuitry polls each memory module using special lines to determine the module's size. That information is then sent back over special lines so that special circuitry can calculate the total size of the memory and the starting and ending addresses for each of the modules. This approach uses centralized control, but still requires special circuitry on each module, special memory configuration circuitry, and additional control lines to effect the polling.
Because of the increased capabilities of computers, space on memory board modules and wires on backplanes of computers are often at a premium. Thus, it would be preferable to use as few of these resources as possible for bootstrap and automatic configuration operations.
Accordingly, it is an object of the present invention to provide an automatic sizing memory system which requires few extra components and signal lines.
It is another object of the present invention to provide such automatic memory sizing in a system which is consistent with the architecture of the computer.
Additional objects and advantages of the present invention will be set forth in part in the description that follows and in part will be obvious from that description or may be learned form the practice of the invention.